// 此文件为Generator的核心入口
// 需要导出一个继承自YeomanGenerator的类型
// Yeoman Generator 在工作时会自动调用在此类型中定义的一些生命周期方法
// 可以在此文件中通过调用父类提供的一些工具方法实现一些功能，例如文件导入

const Generator = require('yeoman-generator');

module.exports = class extends Generator{
  writing() {
    // 通过模板方式写入文件到目标目录
    // 模板文件路径
    const templates = [
      'src/components/Hello.jsx',
      'src/components/Hi.jsx',
      'src/index.html',
      'src/index.js',
      '.babelrc',
      '.gitignore',
      'package.json',
      'README.md',
      'webpack.config.js',
    ]

    // 把每个文件生成到对应路径
    templates.forEach(item => {
      this.fs.copyTpl(this.templatePath(item), this.destinationPath(item), this.answers)
    })
  }

  /**
   * 获取用户输入
   * @return {Promise<unknown>}
   */
  prompting() {
    return this.prompt([
      {
        type: 'input',
        name: 'name',
        message: 'Your project name',
        default: this.appname
      }
    ]).then(answers => {
      this.answers = answers
    })
  }
}
